The personal computer became popular in the 1980's and has continued to grow in importance and deployment scope to the present time. A wide variety of operating systems and storage formats have been developed to enable diverse uses of storage and networking hardware to form the Internet. Popular examples of such operating systems include Microsoft Windows, Linux, and Mac OS/X, but also include a wide array of less-popular variants. All of these operating systems share two common features: they have to be able to boot and they have to be able to access data stored on a disk drive. Unfortunately, a too-diverse compliment of confusing differences has resulted from the proliferation of operating-system specific automatic utilities to manipulate the metadata necessary to support the foregoing operations. Without a functioning boot system, an operating system may be unable to start. Without a functioning disk drive partition and file system metadata record, an operating system may be unable to provide access to the data it has stored. Even though many utilities have been written to support both of these operations, none have been designed to support extensibility. The lack of support for extensibility limits interoperability between diverse operating systems and machine architectures.
The limited interoperability has resulted in a tremendous increase in complexity and a decrease in reliability of booting and mounting initial file systems for home users as well as server engineers and has increased system administration cost considerably.
One simple example is the “fdisk” utility or command. This command is named identically in both Windows and Linux. Unfortunately, the behavior of the fdisk command varies between Windows and Linux. For example, both versions of the fdisk command read and write MBR and EBR format partition information to a hard disk drive, but they each use different command-line options and different interactive command menus. Within the MBR partition table there are both logical block address (LBA) sector numbers and Cylinder-Head-Sector (CHS) addresses. The CHS addresses are interpreted differently in different runtime environments and operating systems; on bootup, the basic input/output system (BIOS) typically uses CHS addresses. Most modern operating systems ignore CHS values in the partition table entirely but print confusing diagnostic messages when they disagree with LBA addresses. There is a difference in interpretation of one in the cylinder number among some versions of DOS as documented by the Linux sfdisk command manual page. There are at least four popular disk partitioning variations under Linux called “fdisk”, “cfdisk”, “sfdisk”, and “gdisk”. These all have slightly different behavior and are difficult for the beginning user to distinguish because of the similarity of names and similarity to the Windows variation. Now that Unix shells are available under Windows through lookalike systems such as Cygwin, there is a great deal of risk and confusion associated with using automated shell scripts to manipulate disk drive partitions. A frequent outcome of automatic partition table manipulation is loss of one or more operating systems on a shared drive.
It is common for advanced users to install more than one operating system on their computer because hard drives have grown in size and lowered in cost faster than operating systems storage footprint over the years. As a result, during installation or recovery, modifications may be needed to disk drive partitioning and booting sequences to allow the user to select which system is desired. Widespread use of emulation systems, supported in CPU hardware through features such as the Intel Virtualization Technology (VT) CPU features, has only added to the complexity and risk associated with performing boot block and partition-table modifications. Operating systems should be aware of each other and cooperate when manipulating these system-critical areas, but the current plethora of different commands, formats, and interpretations of the binary data hinders such interoperation.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.